VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "CPedido"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder6" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Dim lProducto As lProducto
Dim lCategoria As lCategoria
Dim LEmpleado As LEmpleado
Dim lPedido As lPedido
Dim LFormaPago As LFormaPago
Dim lCLiente As LClienteNatural

Public Function abrirBuscarCliente(bean As bClienteNatural) As bClienteNatural
'Set buscarCliente = lcliente.getLista(bean)
Dim frm As New frmBuscarClientes
Set frm.list = lCLiente.getLista(bean)
frm.txtNombre.Text = bean.sNombres
frm.Show 1
Set abrirBuscarCliente = frm.bClienteSeleccionado
End Function

Public Function reimprimir(lista As Collection) As Integer
Dim i As Integer
Dim bpedido As bpedido
Dim control As New CPedido
For i = 1 To lista.Count
    Set bpedido = lista.Item(i)
    If Trim(bpedido.sNumDocumento) <> "" Then
        lPedido.getDetalle bpedido
        control.imprimirTicket bpedido
    End If
   
Next
End Function

Public Function listarPedidos(bean As bpedido) As Collection
    Dim bpedido As New bpedido
    bpedido.bEstado.nCodigo = 0
    Set listarPedidos = lPedido.getLista(bean)
    If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
        utilMensaje.muestraMensaje (errorEncontrado)
    End If
End Function

Public Function listarPedidosporRango(bean As BRangoPedido) As Collection
    Set listarPedidosporRango = lPedido.getListaPorRango(bean)
    If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
        utilMensaje.muestraMensaje (errorEncontrado)
    End If
End Function


Public Sub llenarListaProductos(bproducto As bproducto, ByRef bpaginador As bpaginador)
Dim error As Integer
Set frmPedido.listaProducto = lProducto.getPagina(bproducto, bpaginador, error)
If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
    utilMensaje.muestraMensaje (errorEncontrado)
End If
End Sub

Public Sub llenarListaCategorias(ByRef bpaginador As bpaginador)
Dim error As Integer
Set frmPedido.listaCategoria = lCategoria.getLista(New bCategoria, bpaginador, error)
If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
    utilMensaje.muestraMensaje (errorEncontrado)
End If
End Sub

Public Sub llenarPagos(ByRef bean As bpedido)
Dim result As Integer
result = lPedido.getPagos(bean)
If result = UtilConstantes.OPT_ERROR_ENCONTRADO Then
    utilMensaje.muestraMensaje (errorEncontrado)
End If

End Sub


Public Sub abrirEntrarPedido(bean As bpedido)
        Dim bpaginador As New bpaginador
        Dim bCategoria As New bCategoria
        Dim error As Integer
        Set bean.bUsuario = bparametro.bUsuarioActivo
        Set bean.bCompania = bparametro.bCompaniadPorDefecto
        bean.bEstado.nCodigo = UtilConstantes.ESTADO_PEDIDO_PENDIENTE
        bean.nTipCambio = bparametro.nTipoCambio
        bean.bTipoDocumento.nCodigo = UtilConstantes.TIPO_DOCUMENTO_BOLETA
        
        Set bean.bCompania = bparametro.bCompaniadPorDefecto
        bean.sSerDocumento = bparametro.bCompaniadPorDefecto.bPuntoVenta.sSerie
        lPedido.guardar bean
        Set frmPedido.bean = bean
        Set frmPedido.listaDetalle = bean.lDetalle
        bpaginador.nIndice = 0
        bpaginador.nRegistrosxPagina = frmPedido.cmdCategoria.Count
        bCategoria.bEstado.nCodigo = UtilConstantes.ESTADO_CATEGORIA_ACTIVA
        Set frmPedido.listaCategoria = lCategoria.getLista(bCategoria, bpaginador, error)
        'Set frmPedido.listaCompania = bparametro.lCompania
        If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
            utilMensaje.muestraMensaje (errorEncontrado)
        Else
            Unload frmEntrarVoucher
            frmPedido.Show 1
        End If
  
End Sub
Public Sub mostrarAgregarDetalle(bpedido As bpedido, bproducto As bproducto)
Dim error As Integer
Set frmEntrarDetalle.bpedido = bpedido
Set frmEntrarDetalle.listaServicios = lProducto.getLista(error)
Set frmEntrarDetalle.listaEmpleado = LEmpleado.getLista(error)
util.clearAllObjects frmEntrarDetalle
If Not bproducto Is Nothing Then
    Set frmEntrarDetalle.bean.bproducto = bproducto
    frmEntrarDetalle.txtCodigo.Text = bproducto.nCodigo
    frmEntrarDetalle.lblNombreProducto.Caption = bproducto.sDescripcionCorta
    frmEntrarDetalle.txtPrecio.Text = bproducto.nPrecio
End If
frmEntrarDetalle.Show 1
'frmPedido.mostrarBotoneras False
lPedido.getDetalle bpedido
Set frmPedido.listaDetalle = bpedido.lDetalle
frmPedido.cmdBotonera.SetFocus
If error = UtilConstantes.OPT_ERROR_ENCONTRADO Then
    utilMensaje.muestraMensaje (errorEncontrado)
End If
End Sub

Public Sub guardar(bean As bpedido)
If Not lPedido.guardar(bean) = UtilConstantes.OPT_DATOS_GUARDADOS Then
    utilMensaje.muestraMensaje errorEncontrado
End If
End Sub
Public Sub agregarDetalle(bean As bpedido)
lPedido.agregarDetalle bean
frmPedido.mostrarBotoneras False
lPedido.guardar bean
End Sub

Public Sub eliminarDetalle(bean As bDetalle)
If lPedido.eliminarDetalle(bean) = UtilConstantes.OPT_DATOS_ELIMINADOS Then
    lPedido.getDetalle frmPedido.bean
    lPedido.agregarDetalle frmPedido.bean
    Set frmPedido.listaDetalle = frmPedido.bean.lDetalle
End If
End Sub
Public Sub abrirEditarCliente(ByRef bean As bpedido)
Set frmEntrarVoucher.bean = bean
frmEntrarVoucher.Modo = UtilConstantes.MODO_ACTUALIZAR
frmEntrarVoucher.Show 1
End Sub
Public Sub abrirRegistrarPagos(bean As bpedido)
Set frmEntrarPagos.bean = bean
Set frmEntrarPagos.listaPagos = LFormaPago.getFormasPago
frmEntrarPagos.lblTotal1.nTipoCambio = bparametro.nTipoCambio
frmEntrarPagos.Show 1
End Sub

Public Sub calcularPagos(ByRef bean As bpedido)
lPedido.calcularPagos bean
End Sub

Public Sub anularPedido(ByRef bean As bpedido)
Select Case lPedido.anular(bean)
Case UtilConstantes.OPT_DATOS_GUARDADOS
    If Trim(bean.sNumDocumento) <> "" Then
        lPedido.getDetalle bean
        Me.imprimirAnulacion bean
    End If
    Unload frmBuscarPedido
Case UtilConstantes.OPT_ERROR_ENCONTRADO
    utilMensaje.muestraMensaje errorEncontrado
Case UtilConstantes.OPT_PEDIDO_NO_ANULABLE
    utilMensaje.muestraMensaje PedidoNoAnulable
End Select

End Sub


Public Function registrar(ByRef bean As bpedido) As Integer
Dim vbResponse As VbMsgBoxResult
Dim result As Integer
vbResponse = utilMensaje.muestraMensaje(ConfirmarImpresion)
If vbResponse = vbCancel Then
    Exit Function
Else
    result = lPedido.registrar(bean)
    Select Case result
    Case UtilConstantes.OPT_PEDIDO_FALTA_DESCARGAR
        utilMensaje.muestraMensaje faltaDescargar
    Case UtilConstantes.OPT_ERROR_ENCONTRADO
        utilMensaje.muestraMensaje errorEncontrado
    Case UtilConstantes.OPT_DATOS_GUARDADOS
        If vbResponse = vbYes Then
            lPedido.asignarNumeracion bean
            imprimirTicket bean
        End If
        Unload frmEntrarPagos
        Unload frmPedido
        frmPrincipal.cmdNuevo_Click
    End Select
End If
registrar = result
End Function

Sub imprimirAnulacion(bpedido As bpedido)
'On Error GoTo hnderr
  util.setPrinter bparametro.sNombreImpresora
  Dim i As Integer
  Printer.CurrentY = 1
  Printer.Font.Name = "16 cpi"
  Printer.Font.Size = 8
  Printer.Print "        "
  Printer.Print "                 " & bpedido.bCompania.sRazonSocial
  If Trim(bpedido.bCompania.sSlogan) <> "" Then
  Printer.Print "            " & bpedido.bCompania.sSlogan
  End If
  Printer.Print "            " & bpedido.bCompania.bPuntoVenta.sDireccion
  
  Printer.Print "   Telef: " & bpedido.bCompania.sTelefono; "    R.U.C. " & bpedido.bCompania.sRuc
  Printer.Print " " + bpedido.bCompania.sDireccion
  Printer.Print "   "
  Printer.Print "****************************************************"
  Printer.Print "********  T I C K E T    A N U L A D O  ********"
  Printer.Print "****************************************************"
  Printer.Print "Maq Serie N " + bpedido.bCompania.bPuntoVenta.sSerImpresora + vbTab + vbTab + Format(bpedido.dFecha, "dd/mm/yy")
  Printer.Print "Ticket N" + bpedido.bCompania.bPuntoVenta.sSerie + "-" & Format(Right(bpedido.sNumDocumento, 7), "0000000") + vbTab + vbTab + Format(Time, "HH:MM")
  Printer.Print " "
  Printer.Print "CAJA " & UCase(bpedido.bUsuario.sNombre)
  Printer.Print " "
  Printer.Print " Cant    Servicio                                   P.U.  Total S/."
  Printer.Print " ------------------------------------------------------------------"
     For i = 1 To bpedido.lDetalle.Count
          Dim bDetalle As bDetalle
          Set bDetalle = bpedido.lDetalle(i)
          Printer.CurrentX = 50
          Printer.Print CDbl(bDetalle.nCantidad);
          Printer.CurrentX = 450
          Printer.Print Mid((bDetalle.bproducto.sDescripcionCorta), 1, 22);
          Printer.CurrentX = 2900 - Printer.TextWidth(Format(CDbl(bDetalle.nPrecio), "###,###0.00"))
          Printer.Print Format(CDbl(bDetalle.nPrecio), "###,###0.00");
          Printer.CurrentX = 3500 - Printer.TextWidth(Format(CDbl(bDetalle.nMonto), "###,###0.00"))
          Printer.Print Format(CDbl(bDetalle.nMonto), "###,###0.00")
     Next

    Printer.Print " ------------------------------------------------------------------"
    Printer.Print " "

  
    Printer.Print "VALOR VENTA";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nBasImponible, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nBasImponible, "###,###.00")

    'IGV
    Printer.Print "IGV  " & CStr(bparametro.nIgv * 100) & "%";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nIgv, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nIgv, "###,###.00")

    'Subtotal
    Printer.Print "TOTAL VENTA";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nTotal - bpedido.nDescuento, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nTotal - bpedido.nDescuento, "###,###.00")

    Printer.Print " "
    Printer.Print ""
    If bpedido.sCliente <> "" Then
        Printer.Print "CLIENTE:"
        Printer.Print bpedido.sCliente
    End If
    Printer.Print "";
    Printer.Print ""
    Printer.Print "    " + bpedido.bCompania.sPieDeTicket
    Printer.Print ""
    Printer.Print ""
    Printer.Print "."
    Printer.EndDoc
hnderr:
    If Err.Number = 0 Then Exit Sub
        utilMensaje.muestraMensaje errordeImpresion
    Err.Clear


End Sub

Public Sub imprimirTicket(bpedido As bpedido)
'On Error GoTo hnderr
  util.setPrinter bparametro.sNombreImpresora
  Dim i As Integer
  Printer.CurrentY = 1
  Printer.Font.Name = "16 cpi"
  Printer.Font.Size = 8
  Printer.Print "        "
  Printer.Print "                 " & bpedido.bCompania.sRazonSocial
  If Trim(bpedido.bCompania.sSlogan) <> "" Then
  Printer.Print "            " & bpedido.bCompania.sSlogan
  End If
  Printer.Print "            " & bpedido.bCompania.bPuntoVenta.sDireccion
  Printer.Print "   Telef: " & bpedido.bCompania.bPuntoVenta.sTelefono & "    R.U.C. " & bpedido.bCompania.sRuc
  Printer.Print " " + bpedido.bCompania.sDireccion
  Printer.Print "   "
  Printer.Print "Maq Serie N " + bpedido.bCompania.bPuntoVenta.sSerImpresora + vbTab + vbTab + Format(bpedido.dFecha, "dd/mm/yy")
  Printer.Print "Ticket N" + bpedido.bCompania.bPuntoVenta.sSerie + "-" & Format(Right(bpedido.sNumDocumento, 7), "0000000") + vbTab + vbTab + Format(bpedido.dFecha, "HH:MM")
  Printer.Print " "
  Printer.Print "CAJA " & UCase(bpedido.bUsuario.sNombre)
  Printer.Print " "
  Printer.Print " Cant    Servicio                  P.U.  Total S/."
  Printer.Print " -----------------------------------------------------------------"
     For i = 1 To bpedido.lDetalle.Count
          Dim bDetalle As bDetalle
          Set bDetalle = bpedido.lDetalle(i)
          Printer.CurrentX = 50
          Printer.Print CDbl(bDetalle.nCantidad);
          Printer.CurrentX = 450
          Printer.Print Mid((bDetalle.bproducto.sDescripcionCorta), 1, 22);
          Printer.CurrentX = 2900 - Printer.TextWidth(Format(CDbl(bDetalle.nPrecio), "###,###0.00"))
          Printer.Print Format(CDbl(bDetalle.nPrecio), "###,###0.00");
          Printer.CurrentX = 3500 - Printer.TextWidth(Format(CDbl(bDetalle.nMonto), "###,###0.00"))
          Printer.Print Format(CDbl(bDetalle.nMonto), "###,###0.00")
     Next

    Printer.Print " -----------------------------------------------------------------"
    Printer.Print " "

        If bpedido.nDescuento > 0 Then
            'SUMA DE PRECIOS
            Printer.Print "SUBTOTAL ";
            Printer.CurrentX = 2600
            Printer.Print "S/.";
            Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nTotal, "###,###.00"))
            Printer.Print "    " & Format(bpedido.nTotal, "###,###.00")

            'DSCTO
            Printer.Print "DESCUENTO " + IIf(bpedido.nDescuento > 0, Format(bpedido.nDescuento * 100 / (bpedido.nTotal), "###.00") + "%", "     ");
            Printer.CurrentX = 2600
            Printer.Print "S/.";
            Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nDescuento, "###,###.00"))
            Printer.Print "    " & Format(bpedido.nDescuento, "###,###.00")
        End If

    Printer.Print "VALOR VENTA";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nBasImponible, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nBasImponible, "###,###.00")

    'IGV
    Printer.Print "IGV  " & CStr(bparametro.nIgv * 100) & "%";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nIgv, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nIgv, "###,###.00")

    'Subtotal
    Printer.Print "TOTAL VENTA";
    Printer.CurrentX = 2600
    Printer.Print "S/.";
    Printer.CurrentX = 3200 - Printer.TextWidth(Format(bpedido.nTotal - bpedido.nDescuento, "###,###.00"))
    Printer.Print "    " & Format(bpedido.nTotal - bpedido.nDescuento, "###,###.00")

    Printer.Print " "
    Printer.Print ""
    If bpedido.sCliente <> "" Then
        Printer.Print "CLIENTE:"
        Printer.Print bpedido.sCliente
    End If
    Printer.Print "";
    Printer.Print ""
    Printer.Print "    " + bpedido.bCompania.sPieDeTicket
    Printer.Print ""
    Printer.Print ""
    Printer.Print "."
    Printer.EndDoc
hnderr:
    If Err.Number = 0 Then Exit Sub
        utilMensaje.muestraMensaje errordeImpresion
    Err.Clear

End Sub

Public Sub reimprimirTickets(bparm As BParmImpresionTickets)
Dim lista As New Collection
Dim i As Integer
Dim bpedido As bpedido

Set lista = lPedido.getListaPorRango(bparm)
For i = 1 To lista.Count
    Set bpedido = lista.Item(i)
    lPedido.getDetalle bpedido
    Me.imprimirTicket bpedido
Next
End Sub

Private Sub Class_Initialize()
Set lProducto = New lProducto
Set lCategoria = New lCategoria
Set LEmpleado = New LEmpleado
Set lPedido = New lPedido
Set LFormaPago = New LFormaPago
Set lCLiente = New LClienteNatural
End Sub


